﻿using System.Collections.Generic;
using System;

namespace IBE
{
    public class GenQuoteDetails
    {
        public struct TaxData
        {
            public string Country;
            public string Amt;
        };

        #region Members
        //1
        string _UniqueKey = "";
        public string UniqueKey { get { return _UniqueKey; } set { _UniqueKey = value; } }
        //2
        string _QuoteNum = "";
        public string QuoteNum { get { return _QuoteNum; } set { _QuoteNum = value; } }
        //3
        string _QuoteType = "";
        public string QuoteType { get { return _QuoteType; } set { _QuoteType = value; } }
        //4
        string _LastTkDt = "";
        public string LastTkDt { get { return _LastTkDt; } set { _LastTkDt = value; } }
        //5
        string _QuoteDt = "";
        public string QuoteDt { get { return _QuoteDt; } set { _QuoteDt = value; } }
        //6
        string _IntlSaleInd = "";
        public string IntlSaleInd { get { return _IntlSaleInd; } set { _IntlSaleInd = value; } }
        //7
        string _BaseFareCurrency = "";
        public string BaseFareCurrency { get { return _BaseFareCurrency; } set { _BaseFareCurrency = value; } }
        //8
        string _BaseFareAmt = "";
        public string BaseFareAmt { get { return _BaseFareAmt; } set { _BaseFareAmt = value; } }
        //9
        string _LowestOrNUCFare = "";
        public string LowestOrNUCFare { get { return _LowestOrNUCFare; } set { _LowestOrNUCFare = value; } }
        //10
        string _BaseDecPos = "";
        public string BaseDecPos { get { return _BaseDecPos; } set { _BaseDecPos = value; } }
        //11
        string _EquivCurrency = "";
        public string EquivCurrency { get { return _EquivCurrency; } set { _EquivCurrency = value; } }
        //12
        string _EquivAmt = "";
        public string EquivAmt { get { return _EquivAmt; } set { _EquivAmt = value; } }
        //13
        string _EquivDecPos = "";
        public string EquivDecPos { get { return _EquivDecPos; } set { _EquivDecPos = value; } }
        //14
        string _TotCurrency = "";
        public string TotCurrency { get { return _TotCurrency; } set { _TotCurrency = value; } }
        //15
        string _TotAmt = "";
        public string TotAmt { get { return _TotAmt; } set { _TotAmt = value; } }
        //16
        string _TotDecPos = "";
        public string TotDecPos { get { return _TotDecPos; } set { _TotDecPos = value; } }
        //17
        string _ITNum = "";
        public string ITNum { get { return _ITNum; } set { _ITNum = value; } }
        //18
        string _RteBasedQuote = "";
        public string RteBasedQuote { get { return _RteBasedQuote; } set { _RteBasedQuote = value; } }
        //19
        string _M0 = "";
        public string M0 { get { return _M0; } set { _M0 = value; } }
        //20
        string _M5 = "";
        public string M5 { get { return _M5; } set { _M5 = value; } }
        //21
        string _M10 = "";
        public string M10 { get { return _M10; } set { _M10 = value; } }
        //22
        string _M15 = "";
        public string M15 { get { return _M15; } set { _M15 = value; } }
        //23
        string _M20 = "";
        public string M20 { get { return _M20; } set { _M20 = value; } }
        //24
        string _M25 = "";
        public string M25 { get { return _M25; } set { _M25 = value; } }
        //25
        string _Spare1 = "";
        public string Spare1 { get { return _Spare1; } set { _Spare1 = value; } }
        //26
        string _PrivFQd = "";
        public string PrivFQd { get { return _PrivFQd; } set { _PrivFQd = value; } }
        //27
        string _PFOverrides = "";
        public string PFOverrides { get { return _PFOverrides; } set { _PFOverrides = value; } }
        //28
        string _FlatFQd = "";
        public string FlatFQd { get { return _FlatFQd; } set { _FlatFQd = value; } }
        //29
        string _DirMinApplied = "";
        public string DirMinApplied { get { return _DirMinApplied; } set { _DirMinApplied = value; } }
        //30
        string _VATIncInd = "";
        public string VATIncInd { get { return _VATIncInd; } set { _VATIncInd = value; } }
        //31
        string _PenApplies = "";
        public string PenApplies { get { return _PenApplies; } set { _PenApplies = value; } }
        //32
        string _Spare2 = "";
        public string Spare2 { get { return _Spare2; } set { _Spare2 = value; } }
        //33
        string _QuoteBasis = "";
        public string QuoteBasis { get { return _QuoteBasis; } set { _QuoteBasis = value; } }
        //34
        List<TaxData> _TaxDataAry = new List<TaxData>();
        public List<TaxData> TaxDataAry { get { return _TaxDataAry; } set { _TaxDataAry = value; } }
        #endregion

        #region Method

        #endregion
    }

    public class PsgrTypes
    {
        #region Members
        //1
        string _UniqueKey = "";
        public string UniqueKey { get { return _UniqueKey; } set { _UniqueKey = value; } }
        //2
        string _PICReq = "";
        public string PICReq { get { return _PICReq; } set { _PICReq = value; } }
        //3
        string _QueryAmt = "";
        public string QueryAmt { get { return _QueryAmt; } set { _QueryAmt = value; } }
        //4
        string _QueryIATAFmt = "";
        public string QueryIATAFmt { get { return _QueryIATAFmt; } set { _QueryIATAFmt = value; } }
        //5
        string _QueryApolloFmt = "";
        public string QueryApolloFmt { get { return _QueryApolloFmt; } set { _QueryApolloFmt = value; } }
        //6
        string _PercentQuery = "";
        public string PercentQuery { get { return _PercentQuery; } set { _PercentQuery = value; } }
        //7
        string _AmtQuery = "";
        public string AmtQuery { get { return _AmtQuery; } set { _AmtQuery = value; } }
        //8
        string _AgeQuery = "";
        public string AgeQuery { get { return _AgeQuery; } set { _AgeQuery = value; } }
        //9
        string _ReqReturnedPIC = "";
        public string ReqReturnedPIC { get { return _ReqReturnedPIC; } set { _ReqReturnedPIC = value; } }
        //10
        string _QuoteOnlyPICReq = "";
        public string QuoteOnlyPICReq { get { return _QuoteOnlyPICReq; } set { _QuoteOnlyPICReq = value; } }
        //11
        string _HasDiscData = "";
        public string HasDiscData { get { return _HasDiscData; } set { _HasDiscData = value; } }
        //12
        string _RespPIC = "";
        public string RespPIC { get { return _RespPIC; } set { _RespPIC = value; } }
        //13
        string _RespAmt = "";
        public string RespAmt { get { return _RespAmt; } set { _RespAmt = value; } }
        //14
        string _RespIATAFmt = "";
        public string RespIATAFmt { get { return _RespIATAFmt; } set { _RespIATAFmt = value; } }
        //15
        string _RespATPCOFmt = "";
        public string RespATPCOFmt { get { return _RespATPCOFmt; } set { _RespATPCOFmt = value; } }
        //16
        string _PercentResp = "";
        public string PercentResp { get { return _PercentResp; } set { _PercentResp = value; } }
        //17
        string _AmtResp = "";
        public string AmtResp { get { return _AmtResp; } set { _AmtResp = value; } }
        //18
        string _AgeResp = "";
        public string AgeResp { get { return _AgeResp; } set { _AgeResp = value; } }
        //19
        string _PFCsApply = "";
        public string PFCsApply { get { return _PFCsApply; } set { _PFCsApply = value; } }
        //20
        string _NPFReq = "";
        public string NPFReq { get { return _NPFReq; } set { _NPFReq = value; } }
        //21
        string _Spare1 = "";
        public string Spare1 { get { return _Spare1; } set { _Spare1 = value; } }
        //22
        string _PICPsgrs = "";
        public string PICPsgrs { get { return _PICPsgrs; } set { _PICPsgrs = value; } }
        //23
        string _PsgrNum = "";
        public string PsgrNum { get { return _PsgrNum; } set { _PsgrNum = value; } }
        #endregion

        #region Method

        #endregion
    }

    public class FlightItemCrossRef
    {
        public struct BICInfo
        {
            public string BIC;
            public List<string> PsgrDescNumAry;
        };

        public struct FltItem
        {
            public string IndexNum;
            public List<BICInfo> BICAry;
        };

        #region Members
        //1
        string _UniqueKey = "";
        public string UniqueKey { get { return _UniqueKey; } set { _UniqueKey = value; } }
        //2
        string _ODNum = "";
        public string ODNum { get { return _ODNum; } set { _ODNum = value; } }
        //3
        string _ODNumLegs = "";
        public string ODNumLegs { get { return _ODNumLegs; } set { _ODNumLegs = value; } }
        //4
        string _QueryIATAFmt = "";
        public string QueryIATAFmt { get { return _QueryIATAFmt; } set { _QueryIATAFmt = value; } }
        //5
        List<FltItem> _FltItemAry = new List<FltItem>();
        public List<FltItem> FltItemAry { get { return _FltItemAry; } set { _FltItemAry = value; } }
        #endregion

        #region Method

        #endregion
    }

    public class RulesInfo
    {
        public struct FareRuleInfoYQual
        {
            public string GlobDirOrdinal;
            public string HIFCity1;
            public string HIFCity2;
            public string MileSurchargeRtgInd;
            public string FlownMileComponent;
            public string MPMComponent;
            public string DifBetween;
            public string ExtraMileCity1;
            public string ExtraMileCity2;
            public string ExtraMileCity3;
            public string OTWTransportingAirV;
            public string ComponentAirV1;
            public string ComponentAirV2;
            public string Key;
        };

        #region Members
        //1
        string _UniqueKey = "";
        public string UniqueKey { get { return _UniqueKey; } set { _UniqueKey = value; } }
        //2
        string _QuoteNum = "";
        public string QuoteNum { get { return _QuoteNum; } set { _QuoteNum = value; } }
        //3
        string _FareNum = "";
        public string FareNum { get { return _FareNum; } set { _FareNum = value; } }
        //4
        string _FareRuleInfo = "";
        public string FareRuleInfo { get { return _FareRuleInfo; } set { _FareRuleInfo = value; } }
        //5
        string _PermittedDisc = "";
        public string PermittedDisc { get { return _PermittedDisc; } set { _PermittedDisc = value; } }
        //6
        string _DiscAdultFare = "";
        public string DiscAdultFare { get { return _DiscAdultFare; } set { _DiscAdultFare = value; } }
        //7
        string _GenFare = "";
        public string GenFare { get { return _GenFare; } set { _GenFare = value; } }
        //8
        string _NetFare = "";
        public string NetFare { get { return _NetFare; } set { _NetFare = value; } }
        //9
        string _FareRestricted = "";
        public string FareRestricted { get { return _FareRestricted; } set { _FareRestricted = value; } }
        //10
        string _NGGFIntlInd = "";
        public string NGGFIntlInd { get { return _NGGFIntlInd; } set { _NGGFIntlInd = value; } }
        //11
        string _Spare1 = "";
        public string Spare1 { get { return _Spare1; } set { _Spare1 = value; } }
        //12
        string _StartPt = "";
        public string StartPt { get { return _StartPt; } set { _StartPt = value; } }
        //13
        string _EndPt = "";
        public string EndPt { get { return _EndPt; } set { _EndPt = value; } }
        //14
        string _FirstTravDt = "";
        public string FirstTravDt { get { return _FirstTravDt; } set { _FirstTravDt = value; } }
        //15
        string _AirV = "";
        public string AirV { get { return _AirV; } set { _AirV = value; } }
        //16
        string _FIC = "";
        public string FIC { get { return _FIC; } set { _FIC = value; } }
        //17
        string _TotFareComponent = "";
        public string TotFareComponent { get { return _TotFareComponent; } set { _TotFareComponent = value; } }
        //18
        string _Currency = "";
        public string Currency { get { return _Currency; } set { _Currency = value; } }
        //19
        string _DecPos = "";
        public string DecPos { get { return _DecPos; } set { _DecPos = value; } }
        //20
        string _FareAmt = "";
        public string FareAmt { get { return _FareAmt; } set { _FareAmt = value; } }
        //21
        string _RuleSupplierID = "";
        public string RuleSupplierID { get { return _RuleSupplierID; } set { _RuleSupplierID = value; } }
        //22
        string _RuleNumOrdinal = "";
        public string RuleNumOrdinal { get { return _RuleNumOrdinal; } set { _RuleNumOrdinal = value; } }
        //23
        string _FareTariffNum = "";
        public string FareTariffNum { get { return _FareTariffNum; } set { _FareTariffNum = value; } }
        //24
        string _RuleTextOrdinalNum = "";
        public string RuleTextOrdinalNum { get { return _RuleTextOrdinalNum; } set { _RuleTextOrdinalNum = value; } }
        //25
        string _RulesApply = "";
        public string RulesApply { get { return _RulesApply; } set { _RulesApply = value; } }
        //26
        string _RtesApply = "";
        public string RtesApply { get { return _RtesApply; } set { _RtesApply = value; } }
        //27
        string _NoRulesExist = "";
        public string NoRulesExist { get { return _NoRulesExist; } set { _NoRulesExist = value; } }
        //28
        string _Spare2 = "";
        public string Spare2 { get { return _Spare2; } set { _Spare2 = value; } }
        //29
        string _DBInd = "";
        public string DBInd { get { return _DBInd; } set { _DBInd = value; } }
        //30
        string _HostUseOnly91 = "";
        public string HostUseOnly91 { get { return _HostUseOnly91; } set { _HostUseOnly91 = value; } }
        //31
        string _PFQuoted = "";
        public string PFQuoted { get { return _PFQuoted; } set { _PFQuoted = value; } }
        //32
        string _Spare3 = "";
        public string Spare3 { get { return _Spare3; } set { _Spare3 = value; } }
        //33
        string _DBID = "";
        public string DBID { get { return _DBID; } set { _DBID = value; } }
        //34
        FareRuleInfoYQual _fareRuleInfoYQual = new FareRuleInfoYQual();
        public FareRuleInfoYQual fareRuleInfoYQual { get { return _fareRuleInfoYQual; } set { _fareRuleInfoYQual = value; } }
        #endregion

        #region Method
        
        #endregion
    }

    public class PenaltyRules
    {
        public struct DepRequiredAryItem
        {
            public string DepRequired;
            public string DepNonRef;
            public string TkNonRef;
            public string AirVFee;
            public string Cancellation;
            public string FailConfirmSpace;
            public string ItinChg;
            public string ReplaceTk;
            public string Applicable;
            public string ApplicableTo;
            public string Spare1;
            public string Spare2;
            public string Spare3;
            public string Spare4;
            public string Spare5;
            public string Spare6;
            public string Amt;
            public string Type;
            public string Crncy;
        };

        #region Members
        //1
        string _UniqueKey = "";
        public string UniqueKey { get { return _UniqueKey; } set { _UniqueKey = value; } }
        //2
        string _QuoteNum = "";
        public string QuoteNum { get { return _QuoteNum; } set { _QuoteNum = value; } }
        //3
        string _FareComponentNum = "";
        public string FareComponentNum { get { return _FareComponentNum; } set { _FareComponentNum = value; } }
        //4
        string _PriceUnitNum = "";
        public string PriceUnitNum { get { return _PriceUnitNum; } set { _PriceUnitNum = value; } }
        //5
        List<DepRequiredAryItem> _DepRequiredAry = new List<DepRequiredAryItem>();
        public List<DepRequiredAryItem> DepRequiredAry { get { return _DepRequiredAry; } set { _DepRequiredAry = value; } }
        #endregion

        #region Method

        #endregion
    }

    public class InfoMsg
    {
        #region Members
        //1
        string _UniqueKey = "";
        public string UniqueKey { get { return _UniqueKey; } set { _UniqueKey = value; } }
        //2
        string _QuoteNum = "";
        public string QuoteNum { get { return _QuoteNum; } set { _QuoteNum = value; } }
        //3
        string _MsgNum = "";
        public string MsgNum { get { return _MsgNum; } set { _MsgNum = value; } }
        //4
        string _AppNum = "";
        public string AppNum { get { return _AppNum; } set { _AppNum = value; } }
        //5
        string _MsgType = "";
        public string MsgType { get { return _MsgType; } set { _MsgType = value; } }
        //6
        string _Lang = "";
        public string Lang { get { return _Lang; } set { _Lang = value; } }
        //7
        string _Text = "";
        public string Text { get { return _Text; } set { _Text = value; } }
        #endregion
    }

    public class FareInfo
    {
        List<GenQuoteDetails> _ListGenQuoteDetails = new List<GenQuoteDetails>();
        public List<GenQuoteDetails> ListGenQuoteDetails { get { return _ListGenQuoteDetails; } set { _ListGenQuoteDetails = value; } }

        List<PsgrTypes> _ListPsgrTypes = new List<PsgrTypes>();
        public List<PsgrTypes> ListPsgrTypes { get { return _ListPsgrTypes; } set { _ListPsgrTypes = value; } }

        List<FlightItemCrossRef> _ListFlightItemCrossRef = new List<FlightItemCrossRef>();
        public List<FlightItemCrossRef> ListFlightItemCrossRef { get { return _ListFlightItemCrossRef; } set { _ListFlightItemCrossRef = value; } }
        
        //List<RulesInfo> _ListRulesInfo = new List<RulesInfo>();
        //public List<RulesInfo> ListRulesInfo { get { return _ListRulesInfo; } set { _ListRulesInfo = value; } }

        List<string> _ListDepartureRulesInfo = new List<string>();
        public List<string> ListDepartureRulesInfo { get { return _ListDepartureRulesInfo; } set { _ListDepartureRulesInfo = value; } }

        List<string> _ListReturnRulesInfo = new List<string>();
        public List<string> ListReturnRulesInfo { get { return _ListReturnRulesInfo; } set { _ListReturnRulesInfo = value; } }

        List<PenaltyRules> _ListPenaltyRules = new List<PenaltyRules>();
        public List<PenaltyRules> ListPenaltyRules { get { return _ListPenaltyRules; } set { _ListPenaltyRules = value; } }

        List<InfoMsg> _ListInfoMsg = new List<InfoMsg>();
        public List<InfoMsg> ListInfoMsg { get { return _ListInfoMsg; } set { _ListInfoMsg = value; } }

        RulesInfo _DepartRulesInfo = new RulesInfo();
        public RulesInfo DepartRulesInfo { get { return _DepartRulesInfo; } set { _DepartRulesInfo = value; } }

        RulesInfo _ReturnRulesInfo = new RulesInfo();
        public RulesInfo ReturnRulesInfo { get { return _ReturnRulesInfo; } set { _ReturnRulesInfo = value; } }
    }
}